// 日期js,二次封装dayjs,进一步简化dayjs的操作

import dayjs from "dayjs";


// 格式化日期('YYYY-MM-DD HH:mm:ss')
export const formatDate = (date) => {
    let r = dayjs(date).format('YYYY-MM-DD HH:mm:ss')
    return r
}

// 格式化日期('YYYY-MM-DD')
export const formatTime = (date) => {
    let r = dayjs(date).format('YYYY-MM-DD')
    return r
}


// 获取当前时间的时间戳
export const nowTimestamp = () => {
    // 
    const now = new Date(dayjs().toString()).getTime();
    return now
}

//上月开始日期和结束日期
export const lastMonth = () => {
    let s = dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM-DD')
    let e = dayjs().endOf('month').add(-1, 'month').format('YYYY-MM-DD');
    return [s, e]
}

//本月开始日期和结束日期
export const thisMonth = () => {
    let s = dayjs().startOf('month').format('YYYY-MM-DD')
    let e = dayjs().endOf('month').format('YYYY-MM-DD');
    return [s, e]
}

//上月结束某几天日期
export const lastMonthSomeDay = (days) => {
    // 获取当前时间
    const now = dayjs();
    // 获取上月最后一天的日期
    const endOfLastMonth = now.subtract(1, 'month').endOf('month').format('YYYY-MM-DD');
    // 初始化结果数组
    const dates = [];

    // 循环获取上月最后n天的日期
    for (let i = 0; i < days; i++) {
        // 计算上月最后第n天的日期
        const date = dayjs(endOfLastMonth).subtract(i, 'day').format('YYYY-MM-DD');
        // 将日期添加到结果数组中
        dates.push(date);
    }
    dates.reverse()

    // 返回结果数组
    return dates;
}

//下月开始某几天日期
export const nextMonthSomeDay = (days) => {
    // 获取当前时间
    const now = dayjs();
    // 获取下月第一天的日期
    const startOfNextMonth = now.startOf('month').add(1, 'month').format('YYYY-MM-DD');
    // 初始化结果数组
    const dates = [];

    // 循环获取下月开始的n天的日期
    for (let i = 0; i < days; i++) {
        // 计算下月第i天的日期
        const date = dayjs(startOfNextMonth).add(i, 'day').format('YYYY-MM-DD');
        // 将日期添加到结果数组中
        dates.push(date);
    }

    // 返回结果数组
    return dates;
}

// 获取本月开始日期的星期数

export const getStartWeek = () => {
    // 获取本月第一天的星期数
    const startWeek = dayjs().startOf('month').day();
    return startWeek
}

//获取本月的天数
export const getMonthDays = () => {
    const r = dayjs().daysInMonth();
    return r
}

